package cn.lcl.util;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Properties;
import org.apache.log4j.Logger;
public class ProUtils {
	
	private static final Logger log=Logger.getLogger(ProUtils.class);
	
	private static Properties pro=new Properties();
	
	//对pro进行初始化
	static{
		File[] subFiles=getClassPathProFiles();
		for(File f:subFiles){
			if(log.isDebugEnabled()){
				log.debug("properties路径:"+f.getAbsolutePath());
			}
			try(InputStream in=new FileInputStream(f)){
				pro.load(in);
			} catch (FileNotFoundException e) {
				log.error("文件不存在",e);
			} catch (IOException e) {
				log.error("IO错误",e);
			}
		}
	}
	/**
	 * 获取classpath根目录下得所有properties文件。
	 * @return
	 */
	private static File[] getClassPathProFiles(){
		String utf8ClassPath=ProUtils.class.getClassLoader().getResource("").getPath();//获取类路径
		System.out.println(utf8ClassPath);
		String classPath=null;
		try {
			classPath = URLDecoder.decode(utf8ClassPath,"UTF-8");
			if(log.isDebugEnabled()){
				log.debug(classPath);
			}
		} catch (UnsupportedEncodingException e) {
			log.error("路径转码失败",e);
		}//对字符串进行解码
		File file=new File(classPath);
		//自动搜索类路径下的所有properties文件
		FileFilter filter=new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				// TODO Auto-generated method stub
				if(pathname.isFile()){
					String fileName=pathname.getName();//获取文件名
					if(fileName.endsWith(".properties")){
						return true;
					}
				}
				return false;
			}
		};
		File[] subFiles=file.listFiles(filter);
		return subFiles;
	}
	
	/**
	 * 根据key来获得value值
	 * @param key
	 * @return
	 */
	public static String getProperty(String key){
		return pro.getProperty(key);
	}
}
